home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Jotto ][ 1.2 / source / Shell ƒ / generic window handlers.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  4.4 KB  |  185 lines  |  [TEXT/MMCC]

  1. #include "generic window handlers.h"
  2. #include "text twiddling.h"
  3. #include "window layer.h"
  4. #include "main.h"
  5.  
  6. #define kGrowBoxSize    15
  7.  
  8. enum { key_LeftArrow=0x1c, key_RightArrow, key_UpArrow, key_DownArrow };
  9. enum { key_PageUp=0x0b, key_PageDown };
  10. enum { key_Home=0x01 };
  11. enum { key_End=0x04 };
  12.  
  13. extern    Boolean            gInProgress;    /* see environment.h */
  14. extern    Boolean            gCustomCursor;
  15.  
  16. void GenericCopybits(WindowPtr theWindow, WindowPtr offscreenWindowPtr, Boolean active)
  17. {
  18.     Rect            tempRect;
  19.     
  20.     if (active)
  21.     {
  22.         DrawGrowIcon(theWindow);
  23.     }
  24.     else
  25.     {
  26.         tempRect.bottom=theWindow->portRect.bottom;
  27.         tempRect.right=theWindow->portRect.right;
  28.         tempRect.left=tempRect.right-kGrowBoxSize+1;
  29.         tempRect.top=tempRect.bottom-kGrowBoxSize+1;
  30.         EraseRect(&tempRect);
  31.     }
  32.     
  33.     UpdateControls(theWindow, theWindow->visRgn);
  34.     
  35.     tempRect=theWindow->portRect;
  36.     tempRect.bottom-=kGrowBoxSize;
  37.     tempRect.right-=kGrowBoxSize;
  38.     CopyBits(    &(offscreenWindowPtr->portBits),
  39.                 &(theWindow->portBits),
  40.                 &tempRect, &tempRect, 0, 0L);
  41. }
  42.  
  43. void GenericResizeControls(WindowPtr theWindow)
  44. {
  45.     TEHandle        hTE;
  46.     ControlHandle    vScrollBar, hScrollBar;
  47.     
  48.     hTE=GetWindowTE(theWindow);
  49.     vScrollBar=GetWindowVScrollBar(theWindow);
  50.     hScrollBar=GetWindowHScrollBar(theWindow);
  51.     AdjustScrollSizes(theWindow, hTE, vScrollBar, hScrollBar);
  52.     AdjustViewRect(hTE);
  53.     TECalText(hTE);
  54.     AdjustForEndScroll(vScrollBar, hTE);
  55.     AdjustVScrollBar(vScrollBar, hTE);
  56. }
  57.  
  58. void GenericGetGrowSize(WindowPtr theWindow, Rect *sizeRect)
  59. {
  60.     SetRect(sizeRect, 200, 48+kGrowBoxSize+1, 32766, 32767);
  61. }
  62.  
  63. Boolean GenericKeyPressedInWindow(WindowPtr theWindow, unsigned char theChar)
  64. {
  65.     TEHandle        hTE;
  66.     ControlHandle    vScrollBar;
  67.     
  68.     if (gInProgress)
  69.         return TRUE;
  70.     
  71.     hTE=GetWindowTE(theWindow);
  72.     vScrollBar=GetWindowVScrollBar(theWindow);
  73.     
  74.     switch (theChar)
  75.     {
  76.         case key_PageUp:
  77.             ScrollActionProc(vScrollBar, inPageUp);
  78.             break;
  79.         case key_PageDown:
  80.             ScrollActionProc(vScrollBar, inPageDown);
  81.             break;
  82.         case key_Home:
  83.             TEPinScroll(0, TEGetHeight((**hTE).nLines, 1, hTE), hTE);
  84.             break;
  85.         case key_End:
  86.             TEPinScroll(0, -TEGetHeight((**hTE).nLines, 1, hTE), hTE);
  87.             break;
  88.         default:
  89.             return FALSE;
  90.             break;
  91.     }
  92.     
  93.     AdjustVScrollBar(vScrollBar, hTE);
  94.     
  95.     return TRUE;
  96. }
  97.  
  98. Boolean GenericMouseClickedInWindow(WindowPtr theWindow, Point thePoint, Boolean isEditable)
  99. {
  100.     short            partCode;
  101.     ControlHandle    theControl;
  102.     short            scrollDistance;
  103.     short            oldSetting;
  104.     ControlActionUPP    scrollActionUPP=NewControlActionProc(ScrollActionProc);
  105.     TEHandle        hTE;
  106.     
  107.     if (gInProgress)
  108.         return TRUE;
  109.     
  110.     hTE=GetWindowTE(theWindow);
  111.     
  112.     if (PtInRect(thePoint, &((**hTE).viewRect)))
  113.     {
  114.         TEClick(thePoint, (GetTheModifiers()&512) ? TRUE : FALSE, hTE);
  115.         return TRUE;
  116.     }
  117.     else
  118.     {
  119.         partCode=FindControl(thePoint, theWindow, &theControl);
  120.         if (theControl==GetWindowVScrollBar(theWindow))
  121.         {
  122.             switch (partCode)
  123.             {
  124.                 case inThumb:
  125.                     oldSetting=GetControlValue(theControl);
  126.                     partCode=TrackControl(theControl, thePoint, 0L);
  127.                     if (partCode==inThumb)
  128.                     {
  129.                         scrollDistance=oldSetting-GetControlValue(theControl);
  130.                         if (scrollDistance!=0)
  131.                         {
  132.                             hTE=GetWindowTE(theWindow);
  133.                             TEPinScroll(0, scrollDistance*(**hTE).lineHeight, hTE);
  134.                         }
  135.                     }
  136.                     break;
  137.                 case inUpButton:
  138.                 case inDownButton:
  139.                 case inPageUp:
  140.                 case inPageDown:
  141.                     partCode=TrackControl(theControl, thePoint, scrollActionUPP);
  142.                     break;
  143.             }
  144.             
  145.             return TRUE;
  146.         }
  147.     }
  148.     
  149.     return FALSE;
  150. }
  151.  
  152. void GenericActivate(WindowPtr theWindow)
  153. {
  154.     GrafPtr            curPort;
  155.     
  156.     GetPort(&curPort);
  157.     SetPort(theWindow);
  158.     TEActivate(GetWindowTE(theWindow));
  159.     HiliteControl(GetWindowVScrollBar(theWindow), 0);
  160.     HiliteControl(GetWindowHScrollBar(theWindow), 0);
  161.     DrawGrowIcon(theWindow);
  162.     UpdateControls(theWindow, theWindow->visRgn);
  163.     SetPort(curPort);
  164. }
  165.  
  166. void GenericDeactivate(WindowPtr theWindow)
  167. {
  168.     Rect            tempRect;
  169.     GrafPtr            curPort;
  170.     
  171.     GetPort(&curPort);
  172.     SetPort(theWindow);
  173.     TEDeactivate(GetWindowTE(theWindow));
  174.     gCustomCursor=FALSE;
  175.     HiliteControl(GetWindowVScrollBar(theWindow), 255);
  176.     HiliteControl(GetWindowHScrollBar(theWindow), 255);
  177.     tempRect.bottom=theWindow->portRect.bottom;
  178.     tempRect.right=theWindow->portRect.right;
  179.     tempRect.left=tempRect.right-kGrowBoxSize+1;
  180.     tempRect.top=tempRect.bottom-kGrowBoxSize+1;
  181.     EraseRect(&tempRect);
  182.     UpdateControls(theWindow, theWindow->visRgn);
  183.     SetPort(curPort);
  184. }
  185.